Medidas de desempeño RLS
------------------------
Las siguientes métricas se relacionan con los residuales y entre más
bajo la métrica mejor porque error sería bajo. En algunos casos, como en
los métodos de *Machine Learning* al resultado del error se le llama
pérdida *(loss)* o costo *(cost)*.
• Máximo Error.
• Error Medio Absoluto (MSE).
• Error Porcentual Absoluto Medio (MAPE).
Por su parte, el coeficiente de determinación :math:`(R^2)` es una
medida de cuánto son explicados los datos con el modelo de regresión
ajustado. Entre más cercano a uno es mejor.
Código en R:
~~~~~~~~~~~~
.. code:: r
datos = read.csv("DatosCafe.csv", sep = ";", dec = ",", header = T)
print(head(datos))
.. parsed-literal::
X PrecioInterno PrecioInternacional Producción Exportaciones TRM
1 ene-00 371375 130.12 658 517 1923.57
2 feb-00 354297 124.72 740 642 1950.64
3 mar-00 360016 119.51 592 404 1956.25
4 abr-00 347538 112.67 1055 731 1986.77
5 may-00 353750 110.31 1114 615 2055.69
6 jun-00 341688 100.30 1092 869 2120.17
EUR
1 1916.0
2 1878.5
3 1875.0
4 1832.0
5 1971.5
6 2053.5
.. code:: r
X = datos$Producción
y = datos$Exportaciones
**Ajuste del modelo:**
.. code:: r
regression <- lm(Exportaciones ~ Producción, data = datos)
regression
.. parsed-literal::
Call:
lm(formula = Exportaciones ~ Producción, data = datos)
Coefficients:
(Intercept) Producción
235.3538 0.6769
:math:`\hat{\beta_0}`:
.. code:: r
beta_0 = as.numeric(regression$coefficients[1])
beta_0
.. raw:: html
235.353837174437
:math:`\hat{\beta_1}`:
.. code:: r
beta_1 = as.numeric(regression$coefficients[2])
beta_1
.. raw:: html
0.676867843609397
**Cálculo de los residuales:**
.. code:: r
residuales = regression$residuals
head(residuales)
.. raw:: html
- 1
- -163.732878269429
- 2
- -94.236041445392
- 3
- -232.059600591201
- 4
- -218.449412182351
- 5
- -374.384614955306
- 6
- -105.493522395899
Métricas para evaluar el desempeño del modelo:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Error Máximo:**
De los residuos se selecciona el mayor.
.. math:: MaxError = max(|y_i - \hat{y_i}|) = max(|\hat\varepsilon|)
Entre más bajo el resultado, mejor.
.. code:: r
max_error = max(residuales)
max_error
.. raw:: html
407.531783011865
**Error Medio Absoluto - MSE:**
En inglés *Mean Squared Error* - MSE. Es el promedio de los residuos con
los cuales se aplicó OLS.
.. math:: MSE = \frac{1}{n} \sum (y_i - \hat{y_i})^2 =\frac{1}{n} \sum \hat\varepsilon^2
El MSE es últil para comparar diferentes modelos.
Esta métrica no es sensible a los *outliers*.
Entre más bajo el resultado, mejor.
.. code:: r
MSE = mean(residuales^2)
MSE
.. raw:: html
16259.6220989243
**Error Porcentual Absoluto Medio - MAPE:**
En inglés *Mean Absolute Percentage Error* - MAPE.
.. math:: MAPE = \frac{1}{n} \sum \frac{|y_i - \hat{y_i}|}{|y_i|}
Entre más bajo el resultado, mejor.
.. code:: r
MAPE = mean(abs(residuales/y))
MAPE
.. raw:: html
0.123516747782105
**Coeficiente de Determinación** :math:`R^2`:
Es una versión estandarizada del MSE. El :math:`R^2` es la fracción de
la varianza de :math:`y` que es capturada por el modelo, es decir,
cuánto de la varianza de :math:`y` es explicada por la variable
:math:`X`. El resultado está entre cero y uno, pero en pocos casos puede
dar negativo particularmente cuando se trabaja con conjuntos de prueba
*(test)*.
.. math:: R^2 = 1 - \frac{SSE}{SST}
Donde,
:math:`SSE = \sum_{} \hat{\varepsilon_i}^2 = \sum_{}(y_i-\hat{y_i})^2`
:math:`SST = \sum_{}(y_i-\overline{y_i})^2`. Note que se utiliza
:math:`\overline{y_i}` en lugar de :math:`\hat{y_i}`.
:math:`SST = \sigma_y^2`
Entonces,
.. math:: R^2 = 1 - \frac{MSE}{\sigma_y^2}
Entre más cercano a uno el resultado, mejor.
Con el Coeficiente de Determinación :math:`R^2` se analiza lo siguiente:
:math:`SST` es una medida de la variabilidad de :math:`y` sin considerar
la variable regresora :math:`X` y :math:`SSE` es una medida de la
variabilidad de :math:`y` considerando :math:`X`. Entonces, entre mayor
sea :math:`SSE` que :math:`SST` el modelo es mejor porque se estaría
indicando que la mayor parte de la variabilidad de :math:`y` se está
explicando con el modelo de regresión. Como :math:`0<=SSE<=SST`,
entonces :math:`0<=R^2<=1`.
En otras la palabras, el :math:`R^2` hace una comparación entre modelar
:math:`y` con una línea recta igual a :math:`\overline{y}` que su
pendiente es cero o con una línea recta de la forma
:math:`\hat{y_i} = \hat{\beta_0}+\hat{\beta_1}X_i`
.. code:: r
R_2 = 1 - mean(residuales^2)/var(y)
R_2
.. raw:: html
0.667191592660391
En el ``summary()`` aparece calculado el :math:`R^2`.
.. figure:: r2.png
:alt: R2
R2
.. code:: r
summary(regression)
.. parsed-literal::
Call:
lm(formula = Exportaciones ~ Producción, data = datos)
Residuals:
Min 1Q Median 3Q Max
-492.02 -85.38 -9.89 82.85 407.53
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 235.35384 29.77755 7.904 7.54e-14 ***
Producción 0.67687 0.02962 22.853 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 128 on 262 degrees of freedom
Multiple R-squared: 0.6659, Adjusted R-squared: 0.6647
F-statistic: 522.3 on 1 and 262 DF, p-value: < 2.2e-16